<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 使用setTimeout
        // setTimeout(()=>{
        //     console.log("Hello World")
        // },1000)

        // 参数 ->函数(resolve,reject)
        // resolve,reject本身又是函数

        // new Promise((resolve,reject) =>{
        //     setTimeout(()=>{
        //      console.log("Hello World");
        //      console.log("Hello World");
        //      console.log("Hello World");
        //      console.log("Hello World");
        //      setTimeout(()=>{
        //         console.log("Hello Vuejs");
        //         console.log("Hello Vuejs");
        //         console.log("Hello Vuejs");
        //         setTimeout(()=>{
        //         console.log("Hello Python");
        //         console.log("Hello Python");
        //         console.log("Hello Python");
        //         },1000)
        //      },1000)
        // },1000)
        // })


        // 参数 ->函数(resolve,reject)
        // resolve,reject本身又是函数
        // 链式编程
            // 第一次网络请求的代码
        // new Promise((resolve, reject) => {
        //     setTimeout(() => {
        //         resolve()
        //     }, 1000)
        // }).then(() => {
        //     // 第一次拿到结果的处理代码
        //     console.log("Hello World");
        //     console.log("Hello World");
        //     console.log("Hello World");
        //     console.log("Hello World");
        //     // 第二次网络请求的代码
        //     return new Promise((resolve, reject) => {
        //         setTimeout(() => {
        //             resolve()
        //         }, 1000)
        //     }).then(() => {
        //         // 第二次拿到结果的处理代码
        //         console.log("Hello Vuejs");
        //         console.log("Hello Vuejs");
        //         console.log("Hello Vuejs");
        //         // 第三次网络请求的代码
        //         return new Promise((resolve, reject) => {
        //             setTimeout(() => {
        //                 resolve()
        //             }, 1000)
        //         }).then(() => {
        //             // 第三次拿到结果的处理代码
        //             console.log("Hello Python");
        //             console.log("Hello Python");
        //             console.log("Hello Python");
        //         })
        //     })
        // })

        //什么情况下会用到promise? 
        // 一般情况下是有异步操作时，使用promise对这个异步操作进行封装
        // new ->构造函数(1.保存一些状态信息 2.执行传入的函数)
        // 在执行传入的回调函数时，会传入两个参数，resolve,reject，本身又是函数
        new Promise((resolve,reject) =>{
            setTimeout(()=>{
                // 成功的时候调用resolve
                // resolve("helloworld")
                // 失败的时候调用reject
                reject("error message")
            },100)
        }).then((data)=>{
            // 1.100行的处理代码
            console.log(data);
            console.log(data);
            console.log(data);
            console.log(data);
        }).catch((err) =>{
            console.log(err);
            console.log(err);
            console.log(err);
        })

    </script>
</body>

</html>